/**
 * Universidad del Valle de Guatemala
 * Algoritmos y Bases de Datos
 * @author Rodrigo Mejia 11111
*/

public interface Pila<a> {

	public abstract void push(a item);
	/**
	 * Descripcion: Agrega un elemento al vector.
	 * Nombre: push.
	 * Parametro: Cualquiera del tipo que le asignemos.
	 * @return
	 * Pre condiciones:
	 * Post condiciones: item se agrega a la pila.
	 */
	public abstract a pop();
	/**
	 * Descripcion: Regresa y borra el ultimo elemento agragado a la pila.
	 * Nombre: pop.
	 * Parametro: 
	 * @return Ultimo elemento agregado a la pila.
	 * Pre condiciones: La pila no esta vacia.
	 * Post condiciones: El valor en la mayor posicion es retornado y borrado.
	 */
	public abstract a peek();
	/**
	 * Descripcion: Retorna el ultimo elemento agregado a la pila.
	 * Nombre: peek.
	 * Parametro: 
	 * @return Ultimo elemento agregado a la pila.
	 * Pre condiciones: La pila no esta vacia.
	 * Post condiciones: El valor en mayor posicion es retornado.
	 */
	public abstract boolean empty();
	/**
	 * Descripcion: Nos dice si la pila esta vacia o no.
	 * Nombre: empty.
	 * Parametro:
	 * @return True o False dependiendo si hay algun elemento en la pila.
	 * Pre condiciones:
	 * Post condiciones: Regresa True si la pila esta vacia.
	 */
	public abstract int size();
	/**
	 * Descripcion: Nos dice cuatos elementos hay en la pila. 
	 * Nombre: size
	 * Parametro:
	 * @return Numero de elementos en la pila
	 * Pre condiciones: 
	 * Post condiciones: Regresa cuantos elementos hay en la pila.
	 */
} 
